package com.ruoyi.count.service.impl;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.count.mapper.SysStudentWorkMapper;
import com.ruoyi.count.domain.SysStudentWork;
import com.ruoyi.count.service.ISysStudentWorkService;

/**
 * 工作Service业务层处理
 * 
 * @author ruoyi
 * @date 2024-03-26
 */
@Service
public class SysStudentWorkServiceImpl implements ISysStudentWorkService 
{
    @Autowired
    private SysStudentWorkMapper sysStudentWorkMapper;

    /**
     * 查询工作
     * 
     * @param id 工作主键
     * @return 工作
     */
    @Override
    public SysStudentWork selectSysStudentWorkById(Long id)
    {
        return sysStudentWorkMapper.selectSysStudentWorkById(id);
    }

    /**
     * 查询工作列表
     * 
     * @param sysStudentWork 工作
     * @return 工作
     */
    @Override
    public List<SysStudentWork> selectSysStudentWorkList(SysStudentWork sysStudentWork)
    {
        return sysStudentWorkMapper.selectSysStudentWorkList(sysStudentWork);
    }

    /**
     * 新增工作
     * 
     * @param sysStudentWork 工作
     * @return 结果
     */
    @Override
    public int insertSysStudentWork(SysStudentWork sysStudentWork)
    {
        return sysStudentWorkMapper.insertSysStudentWork(sysStudentWork);
    }

    /**
     * 修改工作
     * 
     * @param sysStudentWork 工作
     * @return 结果
     */
    @Override
    public int updateSysStudentWork(SysStudentWork sysStudentWork)
    {
        return sysStudentWorkMapper.updateSysStudentWork(sysStudentWork);
    }

    /**
     * 批量删除工作
     * 
     * @param ids 需要删除的工作主键
     * @return 结果
     */
    @Override
    public int deleteSysStudentWorkByIds(Long[] ids)
    {
        return sysStudentWorkMapper.deleteSysStudentWorkByIds(ids);
    }

    /**
     * 删除工作信息
     * 
     * @param id 工作主键
     * @return 结果
     */
    @Override
    public int deleteSysStudentWorkById(Long id)
    {
        return sysStudentWorkMapper.deleteSysStudentWorkById(id);
    }

    /**
     * 根据日期排序
     * @return
     */
    @Override
    public List<Integer> groupByTime() {
        //先去获取所有的数据
        List<SysStudentWork> sysStudentWorks = sysStudentWorkMapper.stundetWorkList();
        // 对 workTime 属性进行顺序排序
        List<Date> sortedWorkTimes = sysStudentWorks.stream()
                .map(SysStudentWork::getWorkTime)
                .sorted()
                .collect(Collectors.toList());
        // 根据排序后的 workTime 属性进行分组，并统计每个 workTime 的数量
        Map<Date, Long> workTimeCountMap = sortedWorkTimes.stream()
                .collect(Collectors.groupingBy(w -> w, Collectors.counting()));

        // 将分组的数量存入 List<Integer>
        List<Integer> workTimeCounts = new ArrayList<>(workTimeCountMap.values().stream()
                .map(Long::intValue)
                .collect(Collectors.toList()));

        return workTimeCounts;
    }
}
